//
// Created by Administrator on 2022/1/26.
//

#ifndef CPP_LEARNING_LEETCODE209_H
#define CPP_LEARNING_LEETCODE209_H
#include <vector>
using namespace std;
#include <math.h>
#include <iostream>
/**
    给定一个含有 n 个正整数的数组和一个正整数 s ，找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组，并返回其长度。如果不存在符合条件的子数组，返回 0。

    示例：

    输入：s = 7, nums = [2,3,1,2,4,3] 输出：2 解释：子数组 [4,3] 是该条件下的长度最小的子数组。

    #暴力解法
**/
class Solution209 {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        // 闭区间[l,r]
        int l = 0, r=0;
        int sum = nums[l];
        int minLen = INT32_MAX;

        while (r < nums.size()){
            r ++;
            sum += nums[r];


            while (sum - nums[l] >= target){
                sum -= nums[l];
                l++;
            }
            if(sum >= target){
                minLen = min(minLen, r-l + 1);
            }
        }

        return minLen;

    }
};

void test209(){
    Solution209 s;
    vector<int> nums= {2,3,1,2,4,3};
    int num  = s.minSubArrayLen(7, nums);

}
#endif //CPP_LEARNING_LEETCODE209_H
